package ClassDesignerTest;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 一、list集合的特点：
 * 有序：存储和取出的元素顺序一致
 * 可重复：存储的元素可以重复
 *
 * 二、list集合特有方法
 *  void  add(int index,e element)  指定位置添加元素
 *  e   remove(int index)   移除指定位置的元素
 *  e   set(int index, e element)  修改指定位置的元素，返回被修改的元素
 *  e   get(int index)      返回指定位置的元素
 *  
 * 三、遍历list的四种方法：
 *   1、直接输出法：System.out.println(list);
 *   
 *   2、迭代器迭代： Iterator<String> it = list.iterator;   注意：迭代器存在并发修改异常--当我们修改list之后
 *                  while( it.hasNext() ){ 					 next底层代码的等价判断会随add中进行的操作
 *                  String s = it.next();					 而改变抛出异常，因此
 *                  System.out.println(s); 					 当我们修改一个集合之后，输出这个集合应用另外两种方法
 *                  }
 *                  
 *   3、for循环输出： for(int i=0;i<list.size();i++){
 *                      String s = list.get(i);
 *                		System.out.println(s);
 *                 }
 *   4、for-each循环： for(String s :list){         其中String表示list的类型 ，s是自定义变量
 *         			System.out.println(s);}
 *         
 * 四、List集合的子类及其特点：
 *    1、ArrrayList：底层数据结构是数组，查询快，增删慢
 *  
 *    2、LinkedList：底层数据结构是链表，查询慢，增删快 
 *          方法： addFirst(E)\ addLast(E)\ getFirst() \  getLast() \ removeFirst() \ removeLast()
 */
public class ListTest {
    public static void main(String[] args) {
//		创建集合对象
	List<String> list = new ArrayList<String>();
	    
//	     添加元素
	list.add("Hello");
	list.add("My name is Jiang");
	
//	输出集合对象
	System.out.println(list);  //[Hello, My name is Jiang]

//  迭代器的方式遍历
  Iterator<String> it = list.iterator();
    while(it.hasNext()) {   //hasnext（）判断是否有元素
    	String s= it.next();   //next获取元素
    	System.out.println(s);  
//    	输出结果
//    	Hello
//    	My name is Jiang

    }
    }
    
}
